home *** CD-ROM | disk | FTP | other *** search
- MODULE CfgInstall;
-
- (************************************************************************
- * Install-Programm für WordPlus-CFG-Dateien, *
- * muß auch für LPR-Modula-2-Druckertreiber verwendet werden. *
- * *
- * Dieses Modusl greift auch auf dieses Druckertreibermodul zurück. Wenn*
- * die vorgesehenen 2kBytes Größe für die CFG-Datei nicht ausreichen, *
- * muß das ARRAY TDruckSteuer.a in DRUCKTRE.DEF entsprechend erweitert *
- * werden, maximal jedoch [0..16383] = 16kBytes. *
- * *
- * (c) 9/1989 by Uwe Ischebeck, Ringstr. 31, 6900 Heidelberg *
- ************************************************************************)
-
- IMPORT GEMDOS;
-
- FROM Filename IMPORT filename, fullname, empty,
- SelectFilename, compose, GetDriveAndPath;
-
- FROM Strings IMPORT Length, Concat;
-
- FROM Install IMPORT EBuffOv, CfgError,
- CfgAnalyse, ConfigPrinter, CfgInstall;
-
- FROM Application IMPORT Init, Terminate;
-
- FROM AES IMPORT FormAlert, GrafMouse;
-
- FROM SYSTEM IMPORT ADDRESS;
-
- VAR Maske, DateiName1, DateiName2 : filename;
- DateiName1Str, DateiName2Str : fullname;
- BoxString1 : ARRAY[0..255] OF CHAR;
- BoxString2 : ARRAY[0..79] OF CHAR;
- ende, abbruch,ok : BOOLEAN;
- res, button, handle : INTEGER;
- c : CHAR;
- Rsc1, Rsc2 : ADDRESS;
- mode : (hex,cfg);
- ausgabe : (Drucker, Datei);
-
- CONST QUELLDAT = 0; (* TREE *)
- ZIELDAT = 1; (* TREE *)
-
- BEGIN
- Init;
- Maske:=empty;
-
- DateiName1:=empty;
- GetDriveAndPath(Maske);
-
- BoxString1:="[0][Installationsprogramm für|WordPlus-Druckeranpassungen |V1.2, (c) 1989 U.Ischebeck|";
- BoxString2:="Hex-Datei installieren: HEX|CFG-Datei analysieren: CFG][ HEX | CFG | nix ]";
- Concat(BoxString1,BoxString2,BoxString1);
- button:=FormAlert(1,BoxString1);
- IF button<3 THEN
- IF button=1 THEN Maske.ext:="HEX"; mode:=hex
- ELSE Maske.ext:="CFG"; mode:=cfg END;
- DateiName1:=Maske;
- SelectFilename(Maske, DateiName1, abbruch);
- abbruch:=abbruch OR (Length(DateiName1.name)=0) OR (Length(DateiName1.ext)=0);
- IF NOT abbruch THEN
- IF mode=cfg THEN
- BoxString1:="[2][Soll die Ausgabe in eine|Datei oder auf den Drucker|";
- BoxString2:="erfolgen?][ Datei | Drucker | nix ]";
- Concat(BoxString1,BoxString2,BoxString1);
- button:=FormAlert(1,BoxString1);
- ELSE button:=1 END;
- CASE button OF
- 1: Maske:=DateiName1;
- IF mode=cfg THEN Maske.ext:="HEX"
- ELSE Maske.ext:="CFG" END;
- DateiName2:=Maske;
- Maske.name:="";
- SelectFilename(Maske, DateiName2, ende);
- abbruch:=ende OR (Length(DateiName2.name)=0) OR (Length(DateiName2.ext)=0);
- ausgabe:=Datei;
- | 2: ausgabe:=Drucker; abbruch:=FALSE;
- WHILE NOT(GEMDOS.PrnOS() OR abbruch) DO
- BoxString1:="[1][Drucker streikt!][ nochmal | später ]";
- abbruch:=FormAlert(1,BoxString1)=2;
- END;
- ELSE abbruch:=TRUE END;
- END;
- IF NOT abbruch THEN (* es wurde eine Quell-Datei ausgewählt *)
- GrafMouse(2,NIL);
- compose(DateiName1,Maske,DateiName1Str);
- IF ausgabe=Datei THEN
- compose(DateiName2,Maske,DateiName2Str);
- END;
- IF mode=hex THEN (* Hex-Datei installieren *)
- CfgInstall(DateiName1Str,DateiName2Str);
- ok:=CfgError=0 ;
- IF NOT ok THEN
- IF CfgError=EBuffOv THEN
- BoxString1:="[1][- : Zu viele Bytes in | der CFG-Datei.][ OK ]";
- ELSE
- BoxString1:="[1][- : Fehler im Installprogramm][ OK ]";
- END;
- END;
- ELSE (* mode:=cfg: CFG-Datei analysieren *)
- IF ausgabe=Datei THEN
- GEMDOS.SFirst(DateiName2Str,0,handle);
- IF handle=0 THEN
- ok:=GEMDOS.Delete(DateiName2Str);
- END;
- GEMDOS.Create(DateiName2Str,0,handle);
- ELSE handle:=3 END;
- ConfigPrinter(handle,DateiName1Str);
- CfgAnalyse;
- IF ausgabe=Datei THEN ende:=GEMDOS.Close(handle)
- ELSE ende:=TRUE END;
- ok:=(CfgError=0) OR (GEMDOS.ErrorNo=0) OR NOT(ende);
- IF NOT ok THEN
- BoxString1:="[1][- : Fehler im Analyseprogramm][ OK ]";
- END;
- END;
- GrafMouse(0,NIL);
- IF ok THEN
- IF ausgabe=Datei THEN
- BoxString1:="[1][Datei erstellt:|";
- Concat(BoxString1,DateiName2Str,BoxString1);
- ELSE BoxString1:="[1][Ausgabe beendet " END;
- Concat(BoxString1,"][ OK ]",BoxString1);
- res:=FormAlert(1,BoxString1);
- ELSE
- IF CfgError=0 THEN CfgError:=GEMDOS.ErrorNo END;
- BoxString1[5]:=CHR( ABS((CfgError DIV 10)) + 30H );
- BoxString1[6]:=CHR( ABS((CfgError MOD 10)) + 30H );
- res:=FormAlert(1,BoxString1);
- END;
- END (* if not abbruch *);
- END;
- (* ResourceFree; *)
- Terminate;
- END CfgInstall.
-